package com.highspeed.bdk.utils;

import com.highspeed.bdk.bean.entity.physical.Board;
import com.highspeed.bdk.bean.entity.physical.Cpu;
import com.highspeed.bdk.bean.entity.physical.MachineBox;
import com.highspeed.bdk.bean.entity.physical.PhysicalTopology;

import java.util.List;

/**
 * Created by chenjiabin on 2018/3/23.
 * <p>
 * 物理设备工具类
 */
public final class PhysicalDeviceUtil {
    private PhysicalDeviceUtil() {
    }

    /**
     * 有关系维护方为机箱时，保存物理拓扑信息时绑定机箱对应的物理拓扑实体
     *
     * @param list   主板列表
     * @param parent 机箱
     */
    public static void bindParent(List<MachineBox> list, PhysicalTopology parent) {
        if (list != null) {
            for (MachineBox item : list) {
                item.setPhysicalTopology(parent);
                bindParent(item.getBoards(), item);
            }
        }
    }

    /**
     * 有关系维护方为主板时，保存主机信息时绑定主板对应的机箱实体
     *
     * @param list   主板列表
     * @param parent 机箱
     */
    public static void bindParent(List<Board> list, MachineBox parent) {
        if (list != null) {
            for (Board item : list) {
                item.setMachineBox(parent);
                bindParent(item.getCpus(), item);
            }
        }
    }

    /**
     * 有关系维护方为Cpu时，保存主板信息时绑定CPU对应的主板实体
     *
     * @param list   CPU列表
     * @param parent 主板
     */
    public static void bindParent(List<Cpu> list, Board parent) {
        if (list != null) {
            for (Cpu item : list) {
                item.setBoard(parent);
            }
        }
    }
}
